package com.itheima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.common.entity.PageResult;
import com.itheima.converter.CheckItemConverter;
import com.itheima.dto.CheckItemDTO;
import com.itheima.dto.CheckItemPageQueryDTO;
import com.itheima.mapper.CheckItemAndCheckItemGroupMapper;
import com.itheima.mapper.CheckItemMapper;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Objects;

@Service
@Slf4j
public class CheckItemServiceImpl implements CheckItemService {
    @Autowired
    private CheckItemMapper checkItemMapper;
    @Autowired
    private CheckItemAndCheckItemGroupMapper checkItemAndCheckItemGroupMapper;

    /**
     * 新增检查项
     * @param checkItemDTO
     */
    @Override
    public void saveCheckItem(CheckItemDTO checkItemDTO) {
        CheckItem checkItem = CheckItemConverter.checkItemDTOtoCheckItem(checkItemDTO);
        checkItemMapper.insertCheckItem(checkItem);
    }
    /**
     * 根据id删除检查项目
     */
    @Override
    @Transactional
    public void delectCheckItemById(String id) {
       int checkItemId = Integer.parseInt(id);
       //先删除关联表，在删除本表
          //查询关联表相关数据是否存在
        List<Integer> checkgrouprelevancyCheckitemById = checkItemAndCheckItemGroupMapper.getCheckgrouprelevancyCheckitemById(checkItemId);
        if(!Objects.isNull(checkgrouprelevancyCheckitemById)){
            //根据checkItemId删除关联表
            checkItemAndCheckItemGroupMapper.delectCheckgrouprelevancyCheckitemById(checkItemId);
        }

       checkItemMapper.delectById(checkItemId);
    }
    /**
     * 根据检查组id查询关联的检查项id
     */
    @Override
    public List<Integer> findCheckItemIdsByCheckGroupId(Integer checkGroupId) {
      List<Integer> CheckItemIds = checkItemMapper.findCheckItemIdsByCheckGroupId(checkGroupId);
      return CheckItemIds;
    }
    /**
     * 编辑检查项
     */
    @Override
    public void updateCheckItem(CheckItemDTO checkItemDTO) {
         CheckItem checkItem = CheckItemConverter.checkItemDTOtoCheckItem(checkItemDTO);
         checkItemMapper.updateCheckItem(checkItem);
    }

    /**
     * 查询所有检查项
     * @return
     */
    @Override
    public List<CheckItem> findAllCheckItem() {
        List<CheckItem> AllCheckItem = checkItemMapper.findAllCheckItem();
        return AllCheckItem;
    }

    /**
     * 根据id查询检查项
     * @param id
     * @return
     */
    @Override
    public CheckItem findCheckItemById(Integer id) {
        CheckItem checkItemById = checkItemMapper.findCheckItemById(id);
        return checkItemById;
    }

    /**
     * 分页查询
     * @param checkItemPageQueryDTO
     * @return
     */
    @Override
    public PageResult pageQuery(CheckItemPageQueryDTO checkItemPageQueryDTO) {
        PageHelper.startPage(checkItemPageQueryDTO.getCurrentPage(), checkItemPageQueryDTO.getPageSize());
        Page<CheckItem> checkItemPage=checkItemMapper.pageQuery(checkItemPageQueryDTO);
        PageResult pageResult = new PageResult(checkItemPage.getTotal(), checkItemPage.getResult());
        return pageResult;
    }
}
